package reports.visitor;

import model.entity.Item;
import model.entity.Product;
import model.entity.container.ProductGroup;
import model.entity.container.StorageUnit;

/**
 * @author Ian Ryu
 * 
 */

public interface IVisitor
{

  /**
   * Visit product group node and collect information
   * 
   * @param productgroup
   *          : product group in the tree
   */
  public void visit(ProductGroup productgroup);

  /**
   * Visit product group node and collect information
   * 
   * @param storageunit
   *          : storage unit in the tree
   */
  public void visit(StorageUnit storageunit);

  /**
   * Visit an Item in the storage tree
   * 
   * @param item
   *          the Item to visit
   */
  public void visit(Item item);

  /**
   * Visit a Product in the storage tree
   * 
   * @param item
   *          the Product to visit
   */
  public void visit(Product product);

}
